/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.diplomka.datalayer.dao;

import cz.muni.fi.diplomka.datalayer.entity.CityArmyEntity;
import java.util.List;

/**
 * Interface for manipulation with City Army Entity
 *
 * @author Jakub Kutil
 */
public interface CityArmyDao {

    /**
     * Adds City Army to DB
     *
     * @param cityArmyEntity City Army to add
     */
    public void addArmy(CityArmyEntity cityArmyEntity);

    /**
     * Edits City Army in DB
     *
     * @param cityArmyEntity City Army to edit
     */
    public void editArmy(CityArmyEntity cityArmyEntity);

    /**
     * Deletes City Army from DB
     *
     * @param id ID of City Army
     */
    public void deleteArmy(Long id);

    /**
     * Gets all City Armies in specified City
     *
     * @param cityId ID of specified City
     *
     * @return List of all Armies in City
     */
    public List<CityArmyEntity> getArmiesInCity(Long cityId);

    /**
     * Gets City Army that is on walls in specified City
     *
     * @param cityId ID of specified City
     *
     * @return City Army on city walls
     */
    public CityArmyEntity getArmyOnWallsInCity(Long cityId);

    /**
     * Gets all City Armies send as reinforcement from City
     *
     * @param cityId ID of specified City
     *
     * @return List of all away Armies from City
     */
    public List<CityArmyEntity> getAwayArmiesFromCity(Long cityId);
}
